# 1、如何判断一个对象是可迭代对象，迭代器或生成器
#直接用type()就可以判断是迭代器还是生成器
# from collections import Iterator,Iterable
# import types
# a = [1,2,3]
# print(isinstance(a,Iterable))
# print(isinstance(a,Iterator))
# print(isinstance(a,types.GeneratorType))


# 2、迭代器与生成器的区别
#生成器是一种特殊的迭代器，生成器可以生成数据，迭代器可以访问一个集合的元素

# 3、可迭代对象与迭代器的区别
#可迭代对象有__iter__()方法，可以通过这个方法生成一个迭代器
#迭代器有__iter__()方法和__next__()方法

# 4、如何定义一个生成器
#1.生成器表达式
#2.生成器函数yield

# 5、如何获取可迭代对象、迭代器与生成器中的数据
#可迭代对象：直接print
#迭代器：用for循环或next()方法
#生成器：用next()方法




import time
import datetime
# datetime.datetime.now()：返回系统当前时间（2018-09-18 18:39:55.921602）
# datetime.datetime.now().date()：返回当前时间的日期（2018-09-18）
# datetime.datetime.now().time()：返回当前时间的时分秒（18:40:24.946237）
# datetime.datetime.ctime()：将datetime.datetime类型转化成str类型
# 时间格式转化成字符串：
# datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')：返回时间的字符串（2018-11-09 14:42:36）
# 字符串转化成时间格式:
# datetime.datetime.strptime('2018-11-09 14:42:36','%Y-%m-%d %H:%M:%S')：返回datetime.datetime类型的时间（2018-11-09 14:42:36）


# 1、输入两个日期，计算两个日期之间相差的天数
# def two_days(day1,day2):
#     date1 = time.strptime(day1,"%Y-%m-%d")
#     date2 = time.strptime(day2,"%Y-%m-%d")
#     date1_1 = datetime.datetime(date1[0],date1[1],date1[2])
#     date2_2 = datetime.datetime(date2[0],date2[1],date2[2])
#     return date2_2 - date1_1
#
# def is_time(day3):
#     try:
#         time.strptime(day3,"%Y-%m-%d")
#         return True
#     except:
#         return False
#
# print("请输入正确的日期，格式为(xxxx-xx-xx):")
# while True:
#     day1 = input("请输入第一个日期：")
#     if is_time(day1):
#         break
#     else:
#         print("请输入正确的日期格式！")
# while True:
#     day2 = input("请输入第二个日期：")
#     if is_time(day2):
#         break
#     else:
#         print("请输入正确的日期格式!")
# result = two_days(day1,day2)
# print(result)
#
#
# # date1 = datetime.date(2021,8,20)
# # date2 = datetime.date(2021,10,10)
# # print(date1)
# # print(date2)
# # print(date1-date2)




# 2、输入一个数字n，计算n天之前是什么日期，输出日期形式为“2021-07-27”
# now_day = datetime.datetime.now().date()
# n = input("请输入数字n：")
# day = now_day + datetime.timedelta(days=-int(n))
# print(day)
#
#
# # locatetime = time.asctime(time.localtime(time.time()))
# # print(locatetime)
# # print(type(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
# # print(type(datetime.datetime.strptime('2018-11-09 14:42:36','%Y-%m-%d %H:%M:%S')))


# 3、统计当前文件夹的大小（python实现，预备知识：os模块）
import os
top_dir_path = os.getcwd()
count = 0
for name in os.listdir(top_dir_path):
    name_path = os.path.join(top_dir_path,name)
    if (os.path.isdir(name_path)):
        for path,dirs,files in os.walk(name_path):
            for file in files:
                size = os.path.getsize(os.path.join(path,file))
                count += size
    else:
        size = os.path.getsize(name_path)
        count += size
if count/1024 <= 1024:
    print(str(round(count/1024,2))+"KB")
elif count/1024/1024 <= 1024:
    print(str(round(count/1024/1024,2))+"MB")
else:
    print(str(round(count/1024/1024/1024,2))+"GB")

# dir1 = os.getcwd()
# print(dir1)
# for dirs in os.listdir(dir1):
#     print(dirs)
# print(os.path.getsize(r"E:\pythonliu\2021-07-28-迭代器与生成器\生成器-作业.py"))


# for root, dirs, filename in os.walk(os.getcwd()):
#     print(root)
#     print(dirs)
#     print(filename)


# rootdir = os.getcwd()
# print(rootdir)
# print()
#
# for dirname in os.listdir(rootdir):
#     Dir = os.path.join(rootdir,dirname)
#     print(Dir)

















